package com.xuecheng.media.api;

import com.xuecheng.commons.model.vo.MediaVo;
import com.xuecheng.commons.model.vo.ResourceVo;
import com.xuecheng.commons.model.vo.ResponseResult;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

/**
 * 微服务之间，通过此feign工具调用xc-media-service服务中的接口
 * 1、定义调用的服务名称
 * 2、从微服务中从controller中copy方法
 *
 * 动态代理对象：
 *    在动态代理对象中，借助Ribbon，借助组件
 */
@FeignClient("xc-media-service")
public interface MediaClient {

    /**
     * 返回值：必须填写泛型
     */
    @GetMapping("/media/{mediaId}")
    ResponseResult<MediaVo> findById(@PathVariable("mediaId") Long mediaId);

    @GetMapping("/media/media-url/{mediaId}")
    ResponseResult<ResourceVo> findMediaUrl(@PathVariable("mediaId") Long mediaId);
}
